home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
turbotut.arc
/
VARREC.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1989-06-30
|
2KB
|
62 lines
PROGRAM variant_record_example;
TYPE kind_of_vehicle = (car,truck,bicycle,boat);
vehicle = RECORD
owner_name : STRING[25];
gross_weight : INTEGER;
value : REAL;
CASE what_kind : kind_of_vehicle OF
car : (wheels : INTEGER;
engine : STRING[8]);
truck : (motor : STRING[8];
tires : INTEGER;
payload : INTEGER);
bicycle : (tyres : INTEGER);
boat : (prop_blades : BYTE;
sail : BOOLEAN;
power : STRING[8]);
END; (* of RECORD *)
VAR sunfish,ford,schwinn,mac : vehicle;
BEGIN (* main program *)
ford.owner_name := 'Walter'; (* fields defined in order *)
ford.gross_weight := 5750;
ford.value := 2595.00;
ford.what_kind := truck;
ford.motor := 'V8';
ford.tires := 18;
ford.payload := 12000;
WITH sunfish DO
BEGIN
what_kind := boat; (* fields defined in random order *)
sail := TRUE;
prop_blades := 3;
power := 'wind';
gross_weight := 375;
value := 1300.00;
owner_name := 'Herman and George';
END;
ford.engine := 'flathead'; (* tag-field not defined yet but it *)
ford.what_kind := car; (* must be before it can be used *)
ford.wheels := 4;
(* notice that the non variant part is not redefined here *)
mac := sunfish; (* entire record copied, including the tag-field *)
IF ford.what_kind = car THEN (* this should print *)
WRITELN(ford.owner_name,' owns the car with a ',ford.engine,
' engine');
IF sunfish.what_kind = bicycle THEN (* this should not print *)
WRITELN('The sunfish is a bicycle which it shouldn''t be');
IF mac.what_kind = boat THEN (* this should print *)
WRITELN('The mac is now a boat with',mac.prop_blades:2,
' propeller blades.');
END. (* of main program *)